package com.iweb.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * 处理请求参数的API
 * 处理请求参数的原理
 * 1. 参数传递的途径：
 *  a. queryString 对应 GET请求： 绑定在 url 后面
 *  http://localhost:8090/user?username=admin&password=123456
 *  ‘?username=admin&password=123456’ 就是请求参数部分, 会被绑定在请求url后面
 *  可以借助于 a 标签来实现，默认的是GET请求；
 *  也可以通过form来实现method="get"
 *
 *  b. application/x-www-form-urlencoded POST 请求  数据在 formData
 *  上面的方式可以通过 表单 (form) 来实现
 *  数据传输是通过请求体来传输 ：  name -> value
 *  <form action="/hello" enctype="application/x-www-form-urlencoded" method="post">
 *     <p>
 *         <label for="username">用户账号:</label>
 *         <input type="text" id="username" name="username" value="">
 *     </p>
 *     <p>
 *         <label for="password">用户密码:</label>
 *         <input type="password" id="password" name="password">
 *     </p>
 *     <p>
 *         <input type="submit" value="提交">
 *     </p>
 *  </form>
 * 2. 参数的格式 ： 必须是 k-v 型
 * 3. doGet 和 doPost 方法中
 * 无论请求是 GET 还是 POST 获取请求数据的API是一样
 * 通过 HttpServletRequest 提供的API 来获取参数 ：  req.getParameter("key")
 */
@WebServlet("/user")
public class UserServlet extends HttpServlet {

    // 处理GET请求
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("GET...");
        // 获取数据 ?username=admin&password=123456
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        System.out.println(username+"\t"+password);
    }


    // 处理POST请求
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("POST...");
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        System.out.println(username+"\t"+password);
    }
}
